interface IdFunc<T> {
  id(value: T): T; //没有函数体
  func(): T[]; //没有函数体
}

let fn: IdFunc<number> = {
  id(value) {
    return value;
  },
  func() {
    return [1, 2, 3];
  },
};

let v4 = fn.id(8);
console.log(v4);

let v5 = fn.func();
console.log(v5);

let arr = [12, 34, 76, 43, 65];
arr.forEach((v, i, arr) => {
  console.log(v, i);
});

//泛型类
class MyClass<T> {
  defaultValue: T; //不能直接赋值,  可以通过构造器间接赋值
  //类中的方法必须有函数体
  show(x: T, y: T) {
    console.log(this.defaultValue, x, y);
    return x;
  }

  constructor(value: T) {
    this.defaultValue = value;
  }
}

let mc = new MyClass<number>(10);
// mc.add(2, 3);
let v6 = mc.show(2, 6);
console.log(v6);
